#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
云主机快速部署和测试脚本
"""

import os
import sys
import time
from pathlib import Path

def check_dependencies():
    """检查依赖项"""
    print("🔍 检查依赖项...")
    
    missing_packages = []
    
    # 检查必要的包
    try:
        import win32gui
        import win32api
        import win32con
        print("✅ pywin32 已安装")
    except ImportError:
        missing_packages.append("pywin32")
    
    try:
        import psutil
        print("✅ psutil 已安装")
    except ImportError:
        missing_packages.append("psutil")
    
    # 检查项目文件
    required_files = [
        "wxauto/elements.py",
        "screen_unlock.py", 
        "wechat_config.py",
        "OutPut/outPut.py"
    ]
    
    missing_files = []
    for file_path in required_files:
        if not os.path.exists(file_path):
            missing_files.append(file_path)
        else:
            print(f"✅ {file_path} 存在")
    
    if missing_packages:
        print(f"❌ 缺少包: {', '.join(missing_packages)}")
        print("请运行: pip install " + " ".join(missing_packages))
    
    if missing_files:
        print(f"❌ 缺少文件: {', '.join(missing_files)}")
        return False
    
    return len(missing_packages) == 0

def setup_cloud_config():
    """设置云主机配置"""
    print("\n🔧 配置云主机环境...")
    
    try:
        # 应用云主机配置
        from cloud_server_config import apply_cloud_config
        success = apply_cloud_config()
        
        if success:
            print("✅ 云主机配置应用成功")
        else:
            print("❌ 云主机配置应用失败")
            
        return success
    except Exception as e:
        print(f"❌ 配置云主机环境失败: {e}")
        return False

def test_screen_unlock():
    """测试屏幕解锁功能"""
    print("\n🔓 测试屏幕解锁功能...")
    
    try:
        from screen_unlock import screen_lock_manager
        
        # 检测屏幕锁定状态
        is_locked = screen_lock_manager.is_screen_locked()
        print(f"屏幕锁定状态: {'🔒 已锁定' if is_locked else '🔓 未锁定'}")
        
        if is_locked:
            print("检测到屏幕已锁定，请手动输入密码测试解锁功能")
            password = input("请输入解锁密码（回车跳过）: ").strip()
            
            if password:
                print("尝试解锁屏幕...")
                success = screen_lock_manager.unlock_screen(password)
                print(f"解锁结果: {'✅ 成功' if success else '❌ 失败'}")
                return success
            else:
                print("跳过解锁测试")
                return True
        else:
            print("✅ 屏幕未锁定，解锁功能待命")
            return True
            
    except Exception as e:
        print(f"❌ 屏幕解锁测试失败: {e}")
        return False

def test_wechat_basic():
    """测试微信基本功能"""
    print("\n💬 测试微信基本功能...")
    
    try:
        from wxauto.elements import ChatWnd
        
        # 检查微信是否运行
        print("检查微信进程...")
        
        chat_name = input("请输入要测试的聊天对象名称（默认: 文件传输助手）: ").strip()
        if not chat_name:
            chat_name = "文件传输助手"
        
        unlock_password = input("请输入屏幕解锁密码（如有，回车跳过）: ").strip()
        if not unlock_password:
            unlock_password = None
        
        print(f"正在初始化聊天窗口: {chat_name}")
        chat = ChatWnd(chat_name)
        
        print("正在发送测试消息...")
        test_msg = f"云主机部署测试 - {time.strftime('%Y-%m-%d %H:%M:%S')}"
        
        result = chat.SendMsg(test_msg, password=unlock_password)
        
        if result:
            print("✅ 微信消息发送成功!")
            return True
        else:
            print("❌ 微信消息发送失败!")
            return False
            
    except Exception as e:
        print(f"❌ 微信测试失败: {e}")
        import traceback
        traceback.print_exc()
        return False

def show_usage_tips():
    """显示使用提示"""
    print("\n💡 云主机使用提示:")
    print("=" * 50)
    print("1. 确保微信已经登录并保持运行状态")
    print("2. 如果遇到锁屏问题，设置屏幕解锁密码")
    print("3. 云主机性能较差时，可以调整超时时间")
    print("4. 建议启用详细日志进行调试")
    print("5. 定期检查微信进程状态")
    print("\n配置文件位置:")
    print("- 通用配置: wechat_config.py")
    print("- 云主机配置: cloud_server_config.py")
    print("\n测试脚本:")
    print("- 基本功能测试: python test_improved_sending.py")
    print("- 屏幕解锁测试: python test_screen_unlock.py")
    print("- 部署测试: python deploy_test.py")

def main():
    """主函数"""
    print("🚀 云主机微信自动化部署测试")
    print("=" * 50)
    
    # 检查依赖
    if not check_dependencies():
        print("\n❌ 依赖检查失败，请先安装缺少的包和文件")
        return False
    
    # 设置云主机配置
    if not setup_cloud_config():
        print("\n⚠️  配置设置失败，但可以继续测试")
    
    # 测试屏幕解锁
    if not test_screen_unlock():
        print("\n⚠️  屏幕解锁测试失败，但可以继续其他测试")
    
    # 测试微信功能
    print("\n是否要测试微信发送功能？")
    test_wechat = input("输入 y 继续测试，其他键跳过: ").strip().lower()
    
    if test_wechat == 'y':
        wechat_success = test_wechat_basic()
        if wechat_success:
            print("\n🎉 所有测试通过，云主机部署成功!")
        else:
            print("\n⚠️  微信功能测试失败，请检查配置")
    else:
        print("\n跳过微信功能测试")
    
    # 显示使用提示
    show_usage_tips()
    
    print("\n" + "=" * 50)
    print("部署测试完成!")

if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        print("\n\n测试被用户中断")
    except Exception as e:
        print(f"\n❌ 部署测试过程中发生异常: {e}")
        import traceback
        traceback.print_exc()
